# Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""apple/rules_pkl"""

module(
    name = "rules_pkl",
    version = "0.13.1",
    bazel_compatibility = [">=7.0.0"],
    compatibility_level = 1,
)

bazel_dep(name = "aspect_bazel_lib", version = "2.13.0")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "platforms", version = "0.0.11")
bazel_dep(name = "rules_java", version = "8.11.0")
bazel_dep(name = "rules_jvm_external", version = "6.7")
bazel_dep(name = "rules_shell", version = "0.4.0")

bazel_dep(name = "buildifier_prebuilt", version = "8.2.0.2", dev_dependency = True)
bazel_dep(name = "gazelle", version = "0.44.0", dev_dependency = True, repo_name = "bazel_gazelle")
bazel_dep(name = "rules_bazel_integration_test", version = "0.34.0", dev_dependency = True)
bazel_dep(name = "rules_python", version = "1.4.1", dev_dependency = True)
bazel_dep(name = "stardoc", version = "0.8.0", dev_dependency = True)

pkl = use_extension("//pkl/extensions:pkl.bzl", "pkl")
use_repo(
    pkl,
    "pkl-cli-linux-aarch64",
    "pkl-cli-linux-amd64",
    "pkl-cli-macos-aarch64",
    "pkl-cli-macos-amd64",
)

register_toolchains(
    "@rules_pkl//pkl:pkl_toolchain_codegen_java",
    "@rules_pkl//pkl:pkl_toolchain_linux_aarch64",
    "@rules_pkl//pkl:pkl_toolchain_linux_amd64",
    "@rules_pkl//pkl:pkl_toolchain_macos_aarch64",
    "@rules_pkl//pkl:pkl_toolchain_macos_amd64",
)

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
    name = "rules_pkl_deps",
    artifacts = [
        "com.google.code.gson:gson:2.13.1",
        "org.jetbrains.kotlin:kotlin-stdlib:2.0.21",
        "org.junit.vintage:junit-vintage-engine:5.13.4",
        "org.pkl-lang:pkl-config-java:0.29.1",
        "org.pkl-lang:pkl-tools:0.29.1",
    ],
    lock_file = "//pkl/private:pkl_deps_install.json",
    repositories = [
        "https://repo1.maven.org/maven2/",
    ],
)
use_repo(
    maven,
    "rules_pkl_deps",
    "unpinned_rules_pkl_deps",
)

maven.install(
    name = "custom_pkl_java_library_maven_deps",
    artifacts = [
        "org.pkl-lang:pkl-config-java:0.29.1",
    ],
    lock_file = "//pkl/private:pkl_deps_custom_java_library_maven_deps_install.json",
    repositories = [
        "https://repo1.maven.org/maven2/",
    ],
)
use_repo(
    maven,
    "custom_pkl_java_library_maven_deps",
    "unpinned_custom_pkl_java_library_maven_deps",
)

python = use_extension(
    "@rules_python//python/extensions:python.bzl",
    "python",
    dev_dependency = True,
)
python.toolchain(
    configure_coverage_tool = True,
    ignore_root_user_error = True,
    python_version = "3.12",
)

bazel_binaries = use_extension(
    "@rules_bazel_integration_test//:extensions.bzl",
    "bazel_binaries",
    dev_dependency = True,
)
bazel_binaries.download(version = "7.6.1")
bazel_binaries.download(version = "8.2.1")
use_repo(
    bazel_binaries,
    "bazel_binaries",
    "bazel_binaries_bazelisk",
    "build_bazel_bazel_7_6_1",
    "build_bazel_bazel_8_2_1",
)

hawkeye = use_extension("//tools/lint/hawkeye:extensions.bzl", "hawkeye", dev_dependency = True)
use_repo(
    hawkeye,
    "hawkeye-aarch64-apple-darwin",
    "hawkeye-x86_64-apple-darwin",
    "hawkeye-x86_64-unknown-linux-gnu",
)
